const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const devMode = process.env.NODE_ENV !== 'production';

module.exports = {
    mode: 'production',
    devtool: 'null',
    entry: './src/index.js',
    output: {
        filename: 'main.js',
        // filename: '[name]-[id]-[hash].js',//可以控制文件名输出
        path: path.resolve(__dirname, 'dist')//__dirname是node.js中的一个全局变量，它指向当前执行脚本所在的目录。
    },
    devServer: {
        contentBase: path.resolve(__dirname, 'dist'),//本地服务器所加载的页面所在的目录
        historyApiFallback: true,//不跳转
        inline: true,//实时刷新
        port: 9110,//端口
        hot: true
    },
    module: {
        rules: [
            {
                test: /(\.jsx|\.js)$/,
                use: {
                    loader: "babel-loader",
                },
                exclude: /node_modules/
            },
            {
                test: /\.css$/,
                use: [
                    // devMode ? 'style-loader' : MiniCssExtractPlugin.loader,//style-loader 和 miniloader不能一起用
                    {
                        loader: MiniCssExtractPlugin.loader,
                    },
                    {
                        loader: "css-loader",
                        options: {
                            modules: true, // 指定启用css modules
                        }
                    },
                    {
                        loader: "postcss-loader"
                    }
                ]
            }
        ]
    },
    plugins: [
        new webpack.BannerPlugin('icedog 版权所有，翻版必究'),
        new HtmlWebpackPlugin({
            template: __dirname + "/src/index.tmplate.html"//new 一个这个插件的实例，并传入相关的参数
        }),
        new webpack.HotModuleReplacementPlugin(),//热加载插件
        new webpack.optimize.OccurrenceOrderPlugin(),//为组件分配ID，通过这个插件webpack可以分析和优先考虑使用最多的模块，并为它们分配最小的ID
        new MiniCssExtractPlugin()//分离CSS和JS文件
    ]
};
